read_excel("ruta", sheet = 2)
library(readxl)
library(kableExtra)
dataset <- read_excel("../Bases de datos/Base salarios.xls", sheet = 2)
kable(head(dataset), "markdown")
ID empleado | Apellido | Nombre | Seccional | Facultad | Cargo | Salario | Fch comienzo | Fch nacimiento |
---|---|---|---|---|---|---|---|---|
1968 | Burgos | Jeronimo | Palmira | Administración | Administrativo | 10661-04-19 | 1982-04-05 | 1951-09-28 |
1674 | Villegas | Estefania | Palmira | Administración | Docente | 10661-04-19 | 1992-03-25 | 1964-01-17 |
1516 | Fernandez | Guillermo | Palmira | Administración | Docente | 14220-07-30 | 1985-03-06 | 1963-06-26 |
1330 | Ramirez | Eliana | Palmira | Administración | Docente | 10661-04-19 | 1989-02-14 | 1964-05-17 |
1657 | Carmona | Jose | Palmira | Administración | Docente | 10661-04-19 | 1987-12-06 | 1963-10-10 |
1573 | De santis | Marcela | Palmira | Administración | Aux. Administrativo | 6006-11-09 | 1988-07-07 | 1960-05-31 |
Nota: Tambien de pueden leer los links de bases de datos que se encuenten alojadas en un dirección en la web.
Los archivos CSV (del inglés comma-separated values) son un tipo de documento en formato abierto sencillo para representar datos en forma de tabla, en las que las columnas se separan por comas, en R utilizamos los siguientes códigos para trabajar con esta clase de fichero.
read.csv() ó read.csv2() si el archivo es separado con ;
auto <- read.csv("../Bases de datos/auto-mpg.csv",
header = TRUE, sep = ",",
stringsAsFactors = FALSE)
kable(head(auto),format = "markdown")
No | mpg | cylinders | displacement | horsepower | weight | acceleration | model_year | car_name |
---|---|---|---|---|---|---|---|---|
1 | 28 | 4 | 140 | 90 | 2264 | 15.5 | 71 | chevrolet vega 2300 |
2 | 19 | 3 | 70 | 97 | 2330 | 13.5 | 72 | mazda rx2 coupe |
3 | 36 | 4 | 107 | 75 | 2205 | 14.5 | 82 | honda accord |
4 | 28 | 4 | 97 | 92 | 2288 | 17.0 | 72 | datsun 510 (sw) |
5 | 21 | 6 | 199 | 90 | 2648 | 15.0 | 70 | amc gremlin |
6 | 23 | 4 | 115 | 95 | 2694 | 15.0 | 75 | audi 100ls |
XML es un subconjunto de lenguajes de marcado estándar, simplificado y adaptado a Internet. Un lenguaje de marcado, es una forma de codificar un documento que junto con el texto incorpora etiquetas o marcas que contienen información adicional acerca de la estructura del texto o su presentación,en R utilizamos los siguientes códigos para trabajar con esta clase de fichero.
#Instalamos el paquete necesario
install.packages("XML")
#Cargamos la base de datos en un string llamado url
url <- "file.xml"
#Localizamos el archivo
XML <- xmlParse(url)#XMLInternalDocument
#Se obtiene todo lo que hay en el nodo raız del archivo XML
raiz <- xmlRoot(XML)
#Se crea un data frame con lo valores obtenidos
datos <- xmlSApply(raiz,function(x)xmlSApply(x,xmlValue))
#Creamos un nuevo data frame pero con los datos transpuestos
datos <- data.frame(t(datos),row.names = NULL)
Para leer bases de datos directamente de una página web se usa:
library(RCurl)
xData <- getURL("url")
library(XML)
url <- "../Bases de datos/cd_catalog.xml"
xmldoc <- xmlParse(url)
rootnode <- xmlRoot(xmldoc)
rootnode[2]
## $CD
## <CD>
## <TITLE>Hide your heart</TITLE>
## <ARTIST>Bonnie Tyler</ARTIST>
## <COUNTRY>UK</COUNTRY>
## <COMPANY>CBS Records</COMPANY>
## <PRICE>9.90</PRICE>
## <YEAR>1988</YEAR>
## </CD>
##
## attr(,"class")
## [1] "XMLInternalNodeList" "XMLNodeList"
cds_data <- xmlSApply(rootnode, function(x) xmlSApply(x, xmlValue) )
kable(head(cds_data),"markdown")
CD | CD | CD | CD | CD | CD | CD | CD | CD | CD | CD | CD | CD | CD | CD | CD | CD | CD | CD | CD | CD | CD | CD | CD | CD | CD | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TITLE | Empire Burlesque | Hide your heart | Greatest Hits | Still got the blues | Eros | One night only | Sylvias Mother | Maggie May | Romanza | When a man loves a woman | Black angel | 1999 Grammy Nominees | For the good times | Big Willie style | Tupelo Honey | Soulsville | The very best of | Stop | Bridge of Spies | Private Dancer | Midt om natten | Pavarotti Gala Concert | The dock of the bay | Picture book | Red | Unchain my heart |
ARTIST | Bob Dylan | Bonnie Tyler | Dolly Parton | Gary Moore | Eros Ramazzotti | Bee Gees | Dr.Hook | Rod Stewart | Andrea Bocelli | Percy Sledge | Savage Rose | Many | Kenny Rogers | Will Smith | Van Morrison | Jorn Hoel | Cat Stevens | Sam Brown | T’Pau | Tina Turner | Kim Larsen | Luciano Pavarotti | Otis Redding | Simply Red | The Communards | Joe Cocker |
COUNTRY | USA | UK | USA | UK | EU | UK | UK | UK | EU | USA | EU | USA | UK | USA | UK | Norway | UK | UK | UK | UK | EU | UK | USA | EU | UK | USA |
COMPANY | Columbia | CBS Records | RCA | Virgin records | BMG | Polydor | CBS | Pickwick | Polydor | Atlantic | Mega | Grammy | Mucik Master | Columbia | Polydor | WEA | Island | A and M | Siren | Capitol | Medley | DECCA | Stax Records | Elektra | London | EMI |
PRICE | 10.90 | 9.90 | 9.90 | 10.20 | 9.90 | 10.90 | 8.10 | 8.50 | 10.80 | 8.70 | 10.90 | 10.20 | 8.70 | 9.90 | 8.20 | 7.90 | 8.90 | 8.90 | 7.90 | 8.90 | 7.80 | 9.90 | 7.90 | 7.20 | 7.80 | 8.20 |
YEAR | 1985 | 1988 | 1982 | 1990 | 1997 | 1998 | 1973 | 1990 | 1996 | 1987 | 1995 | 1999 | 1995 | 1997 | 1971 | 1996 | 1990 | 1988 | 1987 | 1983 | 1983 | 1991 | 1968 | 1985 | 1987 | 1987 |
cds.catalog <- data.frame(t(cds_data), row.names = NULL)
kable(cds.catalog[1:5,],format = "markdown")
TITLE | ARTIST | COUNTRY | COMPANY | PRICE | YEAR |
---|---|---|---|---|---|
Empire Burlesque | Bob Dylan | USA | Columbia | 10.90 | 1985 |
Hide your heart | Bonnie Tyler | UK | CBS Records | 9.90 | 1988 |
Greatest Hits | Dolly Parton | USA | RCA | 9.90 | 1982 |
Still got the blues | Gary Moore | UK | Virgin records | 10.20 | 1990 |
Eros | Eros Ramazzotti | EU | BMG | 9.90 | 1997 |
Nota: En ocasiones puede ser complicado extraer información de ficheros XML por lo que se recomienda el estudio de la sintaxis de Xpath.
Un chero HTML es un formato especializado de un chero XML, en R utilizamos los siguientes códigos para trabajar con esta clase de fichero.
#Cargamos el paquete necesario
library(XML)
#Cargamos el link de la pagina web en un string llamado url
url <- "www.pagina.com"
#Cargamos todas la tablas de la pagina web
tablas <- readHTMLTable(url)
Las tablas serán tomadas en R como lista compuesta por todas las tablas que hay almacenadas en la página web, por lo que debemos indicarle a R cuál de esas tablas es la que nos interesa.
library(XML)
#Indicamos a R cual es la tabla que nos interesa
tablas[[6]] #En este caso indicamos a R que queremos la tabla 6
tabla <- readHTMLTable(url,which = 6)
population_url <- "../Bases de datos/WorldPopulation-wiki.htm"
tables <- readHTMLTable(population_url)
most_populated <- tables[[6]]
head(most_populated, 3)
## Rank Country / Territory Population Date
## 1 1 China[note 4] 1,385,310,000 September 9, 2017
## 2 2 India 1,321,010,000 September 9, 2017
## 3 3 United States 325,732,000 September 9, 2017
## Approx. % of world\r\npopulation Source
## 1 18.3% [91]
## 2 17.5% [92]
## 3 4.31% [93]
custom_table <- readHTMLTable(population_url, which = 6)
custom_table
## Rank Country / Territory Population Date
## 1 1 China[note 4] 1,385,310,000 September 9, 2017
## 2 2 India 1,321,010,000 September 9, 2017
## 3 3 United States 325,732,000 September 9, 2017
## 4 4 Indonesia 261,600,000 October 31, 2016
## 5 5 Pakistan 208,848,000 September 9, 2017
## 6 6 Brazil 207,985,000 September 9, 2017
## 7 7 Nigeria 188,500,000 October 31, 2016
## 8 8 Bangladesh 163,106,000 September 9, 2017
## 9 9 Russia 146,773,226 June 1, 2017
## 10 10 Japan 126,750,000 July 1, 2017
## Approx. % of world\r\npopulation Source
## 1 18.3% [91]
## 2 17.5% [92]
## 3 4.31% [93]
## 4 3.46% [94]
## 5 2.76% [95]
## 6 2.75% [96]
## 7 2.49% [97]
## 8 2.16% [98]
## 9 1.94% [99]
## 10 1.68% [100]
JSON acrónimo de JavaScript Object Notation, es un formato de texto ligero para el intercambio de datos, hoy en dı́a se considera la alternativa a XML. En R utilizamos los siguientes códigos para trabajar con esta clase de fichero.
#Instalamos el paquete necesario
install.packages("jsonlite")
#Cargamos el paquete necesario
library(jsonlite)
#la base de datos ó la dirección de la pagina web en un string llamado url
url <- "file.json"
#Leemos la base de datos
base <- fromJSON(url)
#Como en html podemos almacenar un conjunto de data frame en un archivo json por lo que para acceder a el usamos
el siguiente código
base <- base$list$resources$resource$tabla
#Por ultimo, si queremos convertir un data frame en un archivo json podemos hacer lo siguiente
toJSON(data.frame)
library(jsonlite)
dat.1 <- fromJSON("../Bases de datos/students.json")
url <- "http://www.floatrates.com/daily/usd.json"
currencies <- fromJSON(url)
currency.data <- currencies$eur
head(dat.1, 3)
## id Name Email Major year
## 1 1044 Fran Morton fran.m@quama.edu Statistics 2015
## 2 1035 Kato Mullins tempor@giat.com Marketing 2014
## 3 1046 Jordan Keller Cum@gmail.com Chemistry 2014
dat.1$Email
## [1] "fran.m@quama.edu" "tempor@giat.com" "Cum@gmail.com"
## [4] "eu@famesacturpis.com" "Dea.Ortega@velit.ca" "je@euismod.org"
## [7] "yoko@yahoo.co.uk" "efarrella@gravid.com" "Delacruz@shu.edu"
## [10] "mageehump@gmail.com" "kcooper@hotmail.com" "croy@yahoo.com"
Son estructuras de datos propias de R. Estos objetos tienen las ventajas que permiten guardarlos y enviarl objetos y procedimientos para que queden almacenados y puedan ser usados posteriormente.
clientes <- c("Juan","Pedro","Lucas")
fechas <- as.Date(c("2017-12-27","12-11-1","2018-1-1"))
pago <- c(315,192.55,40.15)
pedido <- data.frame(clientes,fechas,pago)
#Aguardando data frame tipo Rdata
save(pedido,file="../Bases de datos/Objeto1.Rdata") # Permite guardar mas de un archivo.
#Guardando dataframe tipo rds
saveRDS(pedido,file="../Bases de datos/Objeto2.rds")
#Cargar objeto Rdata
load("../Bases de datos/Objeto1.Rdata")
#Cargar objeto RDS
objeto <- readRDS("../../../Bases de datos/base2.rds")
Nota: remove(Objeto) Permite remover elementos cargados para eliminar desgate de memoria.
Para guardar todos los objetos de una sección se usa:
save.image(file = "../carpeta/fichero.Rdata")
Se pueden leer tipos archivos de texto como libros o otros documentos.
archivo <- "../Bases de datos/texto.txt"
con <- file(archivo, open="r") # Abrimos la conexión
documento <- readLines(con) # Leemos el contenido del archivo
## Warning in readLines(con): incomplete final line found on '../Bases de
## datos/texto.txt'
close(con) # Cerramos la conexión
str(documento)
## chr [1:2] "Los archivos CSV (del inglés comma-separated values) son un tipo de documento en formato abierto sencillo para "| __truncated__ ...
Y para escribir un archivo de texto.
texto <- "Hola mundo"
con <- file("C:/carpeta/texto_ejemplo.txt", open="w")
documento <- writeLines(text = texto, con = con)
close(con)
Similar a read.tablepero más rápido y más conveniente. Todos los controles como sep, colClassesy nrowsson detectados automáticamente.
library(data.table)
fread(input, file, text, cmd, sep="auto", sep2="auto", dec=".", quote="\"",nrows=Inf, header="auto",
na.strings=getOption("datatable.na.strings","NA"),
stringsAsFactors=FALSE, verbose=getOption("datatable.verbose", FALSE),
skip="__auto__", select=NULL, drop=NULL, colClasses=NULL,
col.names,
check.names=FALSE, encoding="unknown",
strip.white=TRUE, fill=FALSE, blank.lines.skip=FALSE,
key=NULL, index=NULL)
# read.table
DF <- read.csv("base.csv",stringsAsFactors=FALSE)
# read.table optimizado
DF <- read.table("base.csv",header=TRUE,sep=",",quote="",
stringsAsFactors=FALSE,comment.char="",nrows=1e6,
colClasses=c("numeric","integer","numeric",
"character","numeric","integer"))
# texto. csv,..
write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ",
eol = "\n", na = "NA", dec = ".", row.names = TRUE,
col.names = TRUE,
fileEncoding = "")
# excel
write.xlsx2(x, file, sheetName = "Sheet1",
col.names = TRUE, row.names = TRUE, append = FALSE)
En el siguiente repositorio de github encontrara material para que pratique los tipo de ficheros en R. https://github.com/ydmarinb/Recursos/tree/master/Fichero